home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 June: Reference Library / Dev.CD Jun 95 / Dev.CD Jun 95.toast / What's New? / Tool Chest / Interfaces / UniversalInterfaces 2.1B1 / AIncludes / TextUtils.a < prev    next >
Encoding:
Text File  |  1995-04-18  |  22.9 KB  |  1,032 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        TextUtils.a
  3. ;
  4. ;    Contains:    Text Utilities Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Package:    Universal Interfaces 2.1ß1 in “MPW Prerelease” on ETO #17
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__TEXTUTILS__') = 'UNDEFINED' THEN
  21. __TEXTUTILS__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27. ;        include 'ConditionalMacros.a'                                ;
  28.  
  29.     IF &TYPE('__SCRIPT__') = 'UNDEFINED' THEN
  30.     include 'Script.a'
  31.     ENDIF
  32. ;        include 'Quickdraw.a'                                        ;
  33. ;            include 'MixedMode.a'                                    ;
  34. ;            include 'QuickdrawText.a'                                ;
  35. ;        include 'IntlResources.a'                                    ;
  36. ;        include 'Events.a'                                            ;
  37. ;            include 'OSUtils.a'                                    ;
  38. ;                include 'Memory.a'                                    ;
  39.  
  40.     IF &TYPE('__OSUTILS__') = 'UNDEFINED' THEN
  41.     include 'OSUtils.a'
  42.     ENDIF
  43. ;
  44. ;
  45. ;    Here are the current routine names and the translations to the older forms.
  46. ;    Please use the newer forms in all new code and migrate the older names out of existing
  47. ;    code as maintainance permits.
  48. ;    
  49. ;    New Name                    Old Name(s)
  50. ;    
  51. ;    CompareString                IUCompPString IUMagString IUMagPString IUCompString 
  52. ;    CompareText
  53. ;    DateString                    IUDatePString IUDateString 
  54. ;    EqualString                            
  55. ;    ExtendedToString            FormatX2Str
  56. ;    FindScriptRun
  57. ;    FindWordBreaks                NFindWord FindWord
  58. ;    FormatRecToString            Format2Str
  59. ;    GetIndString            
  60. ;    GetString
  61. ;    IdenticalString                IUMagIDString IUMagIDPString IUEqualString IUEqualPString
  62. ;    IdenticalText
  63. ;    InitDateCache
  64. ;    LanguageOrder                IULangOrder
  65. ;    LongDateString                IULDateString
  66. ;    LongTimeString                IULTimeString
  67. ;    LowercaseText                LwrText LowerText
  68. ;    Munger
  69. ;    NewString                
  70. ;    NumToString                
  71. ;    RelString                
  72. ;    ReplaceText
  73. ;    ScriptOrder                    IUScriptOrder
  74. ;    SetString                
  75. ;    StringOrder                    IUStringOrder
  76. ;    StringToDate                String2Date
  77. ;    StringToExtended            FormatStr2X
  78. ;    StringToFormatRec            Str2Format
  79. ;    StringToNum                
  80. ;    StringToTime                                
  81. ;    StripDiacritics                StripText
  82. ;    StyledLineBreak
  83. ;    TextOrder
  84. ;    TimeString                    IUTimeString IUTimePString
  85. ;    TruncString
  86. ;    TruncText
  87. ;    UpperString                    UprString
  88. ;    UppercaseStripDiacritics    StripUpperText
  89. ;    UppercaseText                UprText UprText
  90. ;
  91. ; New constants for System 7.0: 
  92.  
  93. ; Constants for truncWhere argument in TruncString and TruncText 
  94. truncEnd                        EQU        0                    ; Truncate at end 
  95. truncMiddle                        EQU        $4000                ; Truncate in middle 
  96. smTruncEnd                        EQU        0                    ; Truncate at end - obsolete 
  97. smTruncMiddle                    EQU        $4000                ; Truncate in middle - obsolete 
  98. ; Constants for TruncString and TruncText results 
  99. notTruncated                    EQU        0                    ; No truncation was necessary 
  100. truncated                        EQU        1                    ; Truncation performed 
  101. truncErr                        EQU        -1                    ; General error 
  102. smNotTruncated                    EQU        0                    ; No truncation was necessary - obsolete 
  103. smTruncated                        EQU        1                    ; Truncation performed    - obsolete 
  104. smTruncErr                        EQU        -1                    ; General error - obsolete 
  105.  
  106. fVNumber                        EQU        0                    ; first version of NumFormatString 
  107. ; Special language code values for Language Order 
  108. systemCurLang                    EQU        -2                    ; current (itlbLang) lang for system script 
  109. systemDefLang                    EQU        -3                    ; default (table) lang for system script 
  110. currentCurLang                    EQU        -4                    ; current (itlbLang) lang for current script 
  111. currentDefLang                    EQU        -5                    ; default lang for current script 
  112. scriptCurLang                    EQU        -6                    ; current (itlbLang) lang for specified script 
  113. scriptDefLang                    EQU        -7                    ; default language for a specified script 
  114.  
  115. iuSystemCurLang                    EQU        -2                    ; <obsolete> current (itlbLang) lang for system script 
  116. iuSystemDefLang                    EQU        -3                    ; <obsolete> default (table) lang for system script 
  117. iuCurrentCurLang                EQU        -4                    ; <obsolete> current (itlbLang) lang for current script 
  118. iuCurrentDefLang                EQU        -5                    ; <obsolete> default lang for current script 
  119. iuScriptCurLang                    EQU        -6                    ; <obsolete> current (itlbLang) lang for specified script 
  120.  
  121. ; <obsolete> default language for a specified script 
  122. iuScriptDefLang                    EQU        -7
  123.  
  124. ; typedef SInt8             StyledLineBreakCode
  125.  
  126. smBreakWord                        EQU        0
  127. smBreakChar                        EQU        1
  128. smBreakOverflow                    EQU        2
  129.  
  130. ; typedef SInt8             FormatClass
  131.  
  132. fPositive                        EQU        0
  133. fNegative                        EQU        1
  134. fZero                            EQU        2
  135.  
  136. ; typedef SInt8             FormatResultType
  137.  
  138. fFormatOK                        EQU        0
  139. fBestGuess                        EQU        1
  140. fOutOfSynch                        EQU        2
  141. fSpuriousChars                    EQU        3
  142. fMissingDelimiter                EQU        4
  143. fExtraDecimal                    EQU        5
  144. fMissingLiteral                    EQU        6
  145. fExtraExp                        EQU        7
  146. fFormatOverflow                    EQU        8
  147. fFormStrIsNAN                    EQU        9
  148. fBadPartsTable                    EQU        10
  149. fExtraPercent                    EQU        11
  150. fExtraSeparator                    EQU        12
  151. fEmptyFormatString                EQU        13
  152.  
  153. NumFormatString         RECORD    0
  154. fLength                     ds.b   1        ; offset: $0 (0)
  155. fVersion                 ds.b   1        ; offset: $1 (1)
  156. data                     ds.b   254        ; offset: $2 (2)        ; private data 
  157. sizeof                     EQU *            ; size:   $100 (256)
  158.                         ENDR
  159.  
  160. ; typedef struct NumFormatString  NumFormatString
  161. ; typedef struct NumFormatString  NumFormatStringRec
  162. FVector                 RECORD    0
  163. start                     ds.w   1        ; offset: $0 (0)
  164. length                     ds.w   1        ; offset: $2 (2)
  165. sizeof                     EQU *            ; size:   $4 (4)
  166.                         ENDR
  167.  
  168. ; typedef struct FVector     FVector
  169. ; index by [fPositive..fZero] 
  170. ; typedef FVector             TripleInt[3]
  171. ScriptRunStatus         RECORD    0
  172. script                     ds.b   1        ; offset: $0 (0)
  173. runVariant                 ds.b   1        ; offset: $1 (1)
  174. sizeof                     EQU *            ; size:   $2 (2)
  175.                         ENDR
  176.  
  177. ; typedef struct ScriptRunStatus  ScriptRunStatus
  178. ; New types for System 7.0: 
  179. ; Type for truncWhere parameter in new TruncString, TruncText 
  180. ; typedef short             TruncCode
  181.  
  182. shortDate                        EQU        0
  183. longDate                        EQU        1
  184. abbrevDate                        EQU        2
  185.  
  186. ; typedef SInt8             DateForm
  187.  
  188. ; StringToDate status values 
  189. fatalDateTime                    EQU        $8000                ; StringToDate and String2Time mask to a fatal error 
  190. longDateFound                    EQU        1                    ; StringToDate mask to long date found 
  191. leftOverChars                    EQU        2                    ; StringToDate & Time mask to warn of left over characters 
  192. sepNotIntlSep                    EQU        4                    ; StringToDate & Time mask to warn of non-standard separators 
  193. fieldOrderNotIntl                EQU        8                    ; StringToDate & Time mask to warn of non-standard field order 
  194. extraneousStrings                EQU        16                    ; StringToDate & Time mask to warn of unparsable strings in text 
  195. tooManySeps                        EQU        32                    ; StringToDate & Time mask to warn of too many separators 
  196. sepNotConsistent                EQU        64                    ; StringToDate & Time mask to warn of inconsistent separators 
  197. tokenErr                        EQU        $8100                ; StringToDate & Time mask for 'tokenizer err encountered' 
  198. cantReadUtilities                EQU        $8200
  199. dateTimeNotFound                EQU        $8400
  200. dateTimeInvalid                    EQU        $8800
  201.  
  202. ; typedef short             StringToDateStatus
  203. ; typedef short             String2DateStatus
  204. DateCacheRecord         RECORD    0
  205. hidden                     ds.w   256        ; offset: $0 (0)        ; only for temporary use 
  206. sizeof                     EQU *            ; size:   $200 (512)
  207.                         ENDR
  208.  
  209. ; typedef struct DateCacheRecord  DateCacheRecord
  210. ; typedef DateCacheRecord     *DateCachePtr
  211. BreakTable                 RECORD    0
  212. charTypes                 ds.b   256        ; offset: $0 (0)
  213. tripleLength             ds.w   1        ; offset: $100 (256)
  214. triples                     ds.w   1        ; offset: $102 (258)
  215. sizeof                     EQU *            ; size:   $104 (260)
  216.                         ENDR
  217.  
  218. ; typedef struct BreakTable  BreakTable
  219. ; typedef BreakTable         *BreakTablePtr
  220. ; New NBreakTable for System 7.0: 
  221. NBreakTable             RECORD    0
  222. flags1                     ds.b   1        ; offset: $0 (0)
  223. flags2                     ds.b   1        ; offset: $1 (1)
  224. version                     ds.w   1        ; offset: $2 (2)
  225. classTableOff             ds.w   1        ; offset: $4 (4)
  226. auxCTableOff             ds.w   1        ; offset: $6 (6)
  227. backwdTableOff             ds.w   1        ; offset: $8 (8)
  228. forwdTableOff             ds.w   1        ; offset: $A (10)
  229. doBackup                 ds.w   1        ; offset: $C (12)
  230. length                     ds.w   1        ; offset: $E (14)        ; length of NBreakTable 
  231. charTypes                 ds.b   256        ; offset: $10 (16)
  232. tables                     ds.w   1        ; offset: $110 (272)
  233. sizeof                     EQU *            ; size:   $112 (274)
  234.                         ENDR
  235.  
  236. ; typedef struct NBreakTable  NBreakTable
  237. ; typedef NBreakTable         *NBreakTablePtr
  238. ;
  239. ;    The following functions are new names that work on 68k and PowerPC
  240. ;
  241. ;
  242. ; pascal OSErr InitDateCache(DateCachePtr theCache)
  243. ;
  244.     IF ¬ GENERATINGCFM THEN
  245.         Macro
  246.         _InitDateCache
  247.             dc.w     $2F3C
  248.             dc.w     $8204
  249.             dc.w     $FFF8
  250.             dc.w     $A8B5
  251.         EndM
  252.     ELSE
  253.         IMPORT_CFM_FUNCTION    InitDateCache
  254.     ENDIF
  255.  
  256. ;
  257. ; pascal long Munger(Handle h, long offset, const void *ptr1, long len1, const void *ptr2, long len2)
  258. ;
  259.     IF ¬ GENERATINGCFM THEN
  260.         _Munger:    OPWORD    $A9E0
  261.     ELSE
  262.         IMPORT_CFM_FUNCTION    Munger
  263.     ENDIF
  264.  
  265. ;
  266. ; pascal StringHandle NewString(ConstStr255Param theString)
  267. ;
  268.     IF ¬ GENERATINGCFM THEN
  269.         _NewString:    OPWORD    $A906
  270.     ELSE
  271.         IMPORT_CFM_FUNCTION    NewString
  272.     ENDIF
  273.  
  274. ;
  275. ; pascal void SetString(StringHandle theString, ConstStr255Param strNew)
  276. ;
  277.     IF ¬ GENERATINGCFM THEN
  278.         _SetString:    OPWORD    $A907
  279.     ELSE
  280.         IMPORT_CFM_FUNCTION    SetString
  281.     ENDIF
  282.  
  283. ;
  284. ; pascal StringHandle GetString(short stringID)
  285. ;
  286.     IF ¬ GENERATINGCFM THEN
  287.         _GetString:    OPWORD    $A9BA
  288.     ELSE
  289.         IMPORT_CFM_FUNCTION    GetString
  290.     ENDIF
  291.  
  292. ;
  293. ; pascal void GetIndString(Str255 theString, short strListID, short index)
  294. ;
  295.     IF GENERATINGCFM THEN
  296.         IMPORT_CFM_FUNCTION    GetIndString
  297.     ENDIF
  298.  
  299. ;
  300. ; pascal short ScriptOrder(ScriptCode script1, ScriptCode script2)
  301. ;
  302.     IF ¬ GENERATINGCFM THEN
  303.         Macro
  304.         _ScriptOrder
  305.             move.w    #$001E,-(sp)
  306.             dc.w     $A9ED
  307.         EndM
  308.     ELSE
  309.         IMPORT_CFM_FUNCTION    ScriptOrder
  310.     ENDIF
  311.  
  312. ;
  313. ; pascal StyledLineBreakCode StyledLineBreak(Ptr textPtr, long textLen, long textStart, long textEnd, long flags, Fixed *textWidth, long *textOffset)
  314. ;
  315.     IF ¬ GENERATINGCFM THEN
  316.         Macro
  317.         _StyledLineBreak
  318.             dc.w     $2F3C
  319.             dc.w     $821C
  320.             dc.w     $FFFE
  321.             dc.w     $A8B5
  322.         EndM
  323.     ELSE
  324.         IMPORT_CFM_FUNCTION    StyledLineBreak
  325.     ENDIF
  326.  
  327. ;
  328. ; pascal short TruncString(short width, Str255 theString, TruncCode truncWhere)
  329. ;
  330.     IF ¬ GENERATINGCFM THEN
  331.         Macro
  332.         _TruncString
  333.             dc.w     $2F3C
  334.             dc.w     $8208
  335.             dc.w     $FFE0
  336.             dc.w     $A8B5
  337.         EndM
  338.     ELSE
  339.         IMPORT_CFM_FUNCTION    TruncString
  340.     ENDIF
  341.  
  342. ;
  343. ; pascal short TruncText(short width, Ptr textPtr, short *length, TruncCode truncWhere)
  344. ;
  345.     IF ¬ GENERATINGCFM THEN
  346.         Macro
  347.         _TruncText
  348.             dc.w     $2F3C
  349.             dc.w     $820C
  350.             dc.w     $FFDE
  351.             dc.w     $A8B5
  352.         EndM
  353.     ELSE
  354.         IMPORT_CFM_FUNCTION    TruncText
  355.     ENDIF
  356.  
  357. ;
  358. ; pascal short ReplaceText(Handle baseText, Handle substitutionText, Str15 key)
  359. ;
  360.     IF ¬ GENERATINGCFM THEN
  361.         Macro
  362.         _ReplaceText
  363.             dc.w     $2F3C
  364.             dc.w     $820C
  365.             dc.w     $FFDC
  366.             dc.w     $A8B5
  367.         EndM
  368.     ELSE
  369.         IMPORT_CFM_FUNCTION    ReplaceText
  370.     ENDIF
  371.  
  372. ;
  373. ; pascal void FindWordBreaks(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, BreakTablePtr breaks, OffsetTable offsets, ScriptCode script)
  374. ;
  375.     IF ¬ GENERATINGCFM THEN
  376.         Macro
  377.         _FindWordBreaks
  378.             dc.w     $2F3C
  379.             dc.w     $C012
  380.             dc.w     $001A
  381.             dc.w     $A8B5
  382.         EndM
  383.     ELSE
  384.         IMPORT_CFM_FUNCTION    FindWordBreaks
  385.     ENDIF
  386.  
  387. ;
  388. ; pascal void LowercaseText(Ptr textPtr, short len, ScriptCode script)
  389. ;
  390.     IF ¬ GENERATINGCFM THEN
  391.         Macro
  392.         _LowercaseText
  393.             move.w    #$0000,-(sp)
  394.             dc.w     $2F3C
  395.             dc.w     $800A
  396.             dc.w     $FFB6
  397.             dc.w     $A8B5
  398.         EndM
  399.     ELSE
  400.         IMPORT_CFM_FUNCTION    LowercaseText
  401.     ENDIF
  402.  
  403. ;
  404. ; pascal void UppercaseText(Ptr textPtr, short len, ScriptCode script)
  405. ;
  406.     IF ¬ GENERATINGCFM THEN
  407.         Macro
  408.         _UppercaseText
  409.             move.w    #$0400,-(sp)
  410.             dc.w     $2F3C
  411.             dc.w     $800A
  412.             dc.w     $FFB6
  413.             dc.w     $A8B5
  414.         EndM
  415.     ELSE
  416.         IMPORT_CFM_FUNCTION    UppercaseText
  417.     ENDIF
  418.  
  419. ;
  420. ; pascal void StripDiacritics(Ptr textPtr, short len, ScriptCode script)
  421. ;
  422.     IF ¬ GENERATINGCFM THEN
  423.         Macro
  424.         _StripDiacritics
  425.             move.w    #$0200,-(sp)
  426.             dc.w     $2F3C
  427.             dc.w     $800A
  428.             dc.w     $FFB6
  429.             dc.w     $A8B5
  430.         EndM
  431.     ELSE
  432.         IMPORT_CFM_FUNCTION    StripDiacritics
  433.     ENDIF
  434.  
  435. ;
  436. ; pascal void UppercaseStripDiacritics(Ptr textPtr, short len, ScriptCode script)
  437. ;
  438.     IF ¬ GENERATINGCFM THEN
  439.         Macro
  440.         _UppercaseStripDiacritics
  441.             move.w    #$0600,-(sp)
  442.             dc.w     $2F3C
  443.             dc.w     $800A
  444.             dc.w     $FFB6
  445.             dc.w     $A8B5
  446.         EndM
  447.     ELSE
  448.         IMPORT_CFM_FUNCTION    UppercaseStripDiacritics
  449.     ENDIF
  450.  
  451. ;
  452. ; pascal ScriptRunStatus FindScriptRun(Ptr textPtr, long textLen, long *lenUsed)
  453. ;
  454.     IF ¬ GENERATINGCFM THEN
  455.         Macro
  456.         _FindScriptRun
  457.             dc.w     $2F3C
  458.             dc.w     $820C
  459.             dc.w     $0026
  460.             dc.w     $A8B5
  461.         EndM
  462.     ELSE
  463.         IMPORT_CFM_FUNCTION    FindScriptRun
  464.     ENDIF
  465.  
  466. ;
  467. ; pascal Boolean EqualString(ConstStr255Param str1, ConstStr255Param str2, Boolean caseSensitive, Boolean diacSensitive)
  468. ;
  469.     IF GENERATINGCFM THEN
  470.         IMPORT_CFM_FUNCTION    EqualString
  471.     ENDIF
  472.  
  473. ;
  474. ; pascal void UpperString(Str255 theString, Boolean diacSensitive)
  475. ;
  476.     IF GENERATINGCFM THEN
  477.         IMPORT_CFM_FUNCTION    UpperString
  478.     ENDIF
  479.  
  480. ;
  481. ; pascal void StringToNum(ConstStr255Param theString, long *theNum)
  482. ;
  483.     IF GENERATINGCFM THEN
  484.         IMPORT_CFM_FUNCTION    StringToNum
  485.     ENDIF
  486.  
  487. ;
  488. ; pascal void NumToString(long theNum, Str255 theString)
  489. ;
  490.     IF GENERATINGCFM THEN
  491.         IMPORT_CFM_FUNCTION    NumToString
  492.     ENDIF
  493.  
  494. ;
  495. ; pascal short RelString(ConstStr255Param str1, ConstStr255Param str2, Boolean caseSensitive, Boolean diacSensitive)
  496. ;
  497.     IF GENERATINGCFM THEN
  498.         IMPORT_CFM_FUNCTION    RelString
  499.     ENDIF
  500.  
  501. ;
  502. ; pascal StringToDateStatus StringToDate(Ptr textPtr, long textLen, DateCachePtr theCache, long *lengthUsed, LongDateRec *dateTime)
  503. ;
  504.     IF ¬ GENERATINGCFM THEN
  505.         Macro
  506.         _StringToDate
  507.             dc.w     $2F3C
  508.             dc.w     $8214
  509.             dc.w     $FFF6
  510.             dc.w     $A8B5
  511.         EndM
  512.     ELSE
  513.         IMPORT_CFM_FUNCTION    StringToDate
  514.     ENDIF
  515.  
  516. ;
  517. ; pascal StringToDateStatus StringToTime(Ptr textPtr, long textLen, DateCachePtr theCache, long *lengthUsed, LongDateRec *dateTime)
  518. ;
  519.     IF ¬ GENERATINGCFM THEN
  520.         Macro
  521.         _StringToTime
  522.             dc.w     $2F3C
  523.             dc.w     $8214
  524.             dc.w     $FFF4
  525.             dc.w     $A8B5
  526.         EndM
  527.     ELSE
  528.         IMPORT_CFM_FUNCTION    StringToTime
  529.     ENDIF
  530.  
  531. ;
  532. ; pascal FormatStatus ExtendedToString(extended80 *x, const NumFormatString *myCanonical, const NumberParts *partsTable, Str255 outString)
  533. ;
  534.     IF ¬ GENERATINGCFM THEN
  535.         Macro
  536.         _ExtendedToString
  537.             dc.w     $2F3C
  538.             dc.w     $8210
  539.             dc.w     $FFE8
  540.             dc.w     $A8B5
  541.         EndM
  542.     ELSE
  543.         IMPORT_CFM_FUNCTION    ExtendedToString
  544.     ENDIF
  545.  
  546. ;
  547. ; pascal FormatStatus StringToExtended(ConstStr255Param source, const NumFormatString *myCanonical, const NumberParts *partsTable, extended80 *x)
  548. ;
  549.     IF ¬ GENERATINGCFM THEN
  550.         Macro
  551.         _StringToExtended
  552.             dc.w     $2F3C
  553.             dc.w     $8210
  554.             dc.w     $FFE6
  555.             dc.w     $A8B5
  556.         EndM
  557.     ELSE
  558.         IMPORT_CFM_FUNCTION    StringToExtended
  559.     ENDIF
  560.  
  561. ;
  562. ; pascal FormatStatus StringToFormatRec(ConstStr255Param inString, const NumberParts *partsTable, NumFormatString *outString)
  563. ;
  564.     IF ¬ GENERATINGCFM THEN
  565.         Macro
  566.         _StringToFormatRec
  567.             dc.w     $2F3C
  568.             dc.w     $820C
  569.             dc.w     $FFEC
  570.             dc.w     $A8B5
  571.         EndM
  572.     ELSE
  573.         IMPORT_CFM_FUNCTION    StringToFormatRec
  574.     ENDIF
  575.  
  576. ;
  577. ; pascal FormatStatus FormatRecToString(const NumFormatString *myCanonical, const NumberParts *partsTable, Str255 outString, TripleInt positions)
  578. ;
  579.     IF ¬ GENERATINGCFM THEN
  580.         Macro
  581.         _FormatRecToString
  582.             dc.w     $2F3C
  583.             dc.w     $8210
  584.             dc.w     $FFEA
  585.             dc.w     $A8B5
  586.         EndM
  587.     ELSE
  588.         IMPORT_CFM_FUNCTION    FormatRecToString
  589.     ENDIF
  590.  
  591. ;
  592. ;    The following functions are old names, but are required for PowerPC builds
  593. ;    becuase InterfaceLib exports these names, instead of the new ones.
  594. ;
  595. ;
  596. ; pascal short IUMagString(const void *aPtr, const void *bPtr, short aLen, short bLen)
  597. ;
  598.     IF ¬ GENERATINGCFM THEN
  599.         Macro
  600.         _IUMagString
  601.             move.w    #$000A,-(sp)
  602.             dc.w     $A9ED
  603.         EndM
  604.     ELSE
  605.         IMPORT_CFM_FUNCTION    IUMagString
  606.     ENDIF
  607.  
  608. ;
  609. ; pascal short IUMagIDString(const void *aPtr, const void *bPtr, short aLen, short bLen)
  610. ;
  611.     IF ¬ GENERATINGCFM THEN
  612.         Macro
  613.         _IUMagIDString
  614.             move.w    #$000C,-(sp)
  615.             dc.w     $A9ED
  616.         EndM
  617.     ELSE
  618.         IMPORT_CFM_FUNCTION    IUMagIDString
  619.     ENDIF
  620.  
  621. ;
  622. ; pascal short IUMagPString(const void *aPtr, const void *bPtr, short aLen, short bLen, Handle itl2Handle)
  623. ;
  624.     IF ¬ GENERATINGCFM THEN
  625.         Macro
  626.         _IUMagPString
  627.             move.w    #$001A,-(sp)
  628.             dc.w     $A9ED
  629.         EndM
  630.     ELSE
  631.         IMPORT_CFM_FUNCTION    IUMagPString
  632.     ENDIF
  633.  
  634. ;
  635. ; pascal short IUMagIDPString(const void *aPtr, const void *bPtr, short aLen, short bLen, Handle itl2Handle)
  636. ;
  637.     IF ¬ GENERATINGCFM THEN
  638.         Macro
  639.         _IUMagIDPString
  640.             move.w    #$001C,-(sp)
  641.             dc.w     $A9ED
  642.         EndM
  643.     ELSE
  644.         IMPORT_CFM_FUNCTION    IUMagIDPString
  645.     ENDIF
  646.  
  647. ;
  648. ; pascal void IUDateString(long dateTime, DateForm longFlag, Str255 result)
  649. ;
  650.     IF ¬ GENERATINGCFM THEN
  651.         Macro
  652.         _IUDateString
  653.             dc.w     $4267
  654.             dc.w     $A9ED
  655.         EndM
  656.     ELSE
  657.         IMPORT_CFM_FUNCTION    IUDateString
  658.     ENDIF
  659.  
  660. ;
  661. ; pascal void IUTimeString(long dateTime, Boolean wantSeconds, Str255 result)
  662. ;
  663.     IF ¬ GENERATINGCFM THEN
  664.         Macro
  665.         _IUTimeString
  666.             move.w    #$0002,-(sp)
  667.             dc.w     $A9ED
  668.         EndM
  669.     ELSE
  670.         IMPORT_CFM_FUNCTION    IUTimeString
  671.     ENDIF
  672.  
  673. ;
  674. ; pascal void IUDatePString(long dateTime, DateForm longFlag, Str255 result, Handle intlHandle)
  675. ;
  676.     IF ¬ GENERATINGCFM THEN
  677.         Macro
  678.         _IUDatePString
  679.             move.w    #$000E,-(sp)
  680.             dc.w     $A9ED
  681.         EndM
  682.     ELSE
  683.         IMPORT_CFM_FUNCTION    IUDatePString
  684.     ENDIF
  685.  
  686. ;
  687. ; pascal void IUTimePString(long dateTime, Boolean wantSeconds, Str255 result, Handle intlHandle)
  688. ;
  689.     IF ¬ GENERATINGCFM THEN
  690.         Macro
  691.         _IUTimePString
  692.             move.w    #$0010,-(sp)
  693.             dc.w     $A9ED
  694.         EndM
  695.     ELSE
  696.         IMPORT_CFM_FUNCTION    IUTimePString
  697.     ENDIF
  698.  
  699. ;
  700. ; pascal void IULDateString(LongDateTime *dateTime, DateForm longFlag, Str255 result, Handle intlHandle)
  701. ;
  702.     IF ¬ GENERATINGCFM THEN
  703.         Macro
  704.         _IULDateString
  705.             move.w    #$0014,-(sp)
  706.             dc.w     $A9ED
  707.         EndM
  708.     ELSE
  709.         IMPORT_CFM_FUNCTION    IULDateString
  710.     ENDIF
  711.  
  712. ;
  713. ; pascal void IULTimeString(LongDateTime *dateTime, Boolean wantSeconds, Str255 result, Handle intlHandle)
  714. ;
  715.     IF ¬ GENERATINGCFM THEN
  716.         Macro
  717.         _IULTimeString
  718.             move.w    #$0016,-(sp)
  719.             dc.w     $A9ED
  720.         EndM
  721.     ELSE
  722.         IMPORT_CFM_FUNCTION    IULTimeString
  723.     ENDIF
  724.  
  725. ;
  726. ; pascal short IUScriptOrder(ScriptCode script1, ScriptCode script2)
  727. ;
  728.     IF ¬ GENERATINGCFM THEN
  729.         Macro
  730.         _IUScriptOrder
  731.             move.w    #$001E,-(sp)
  732.             dc.w     $A9ED
  733.         EndM
  734.     ELSE
  735.         IMPORT_CFM_FUNCTION    IUScriptOrder
  736.     ENDIF
  737.  
  738. ;
  739. ; pascal short IULangOrder(LangCode language1, LangCode language2)
  740. ;
  741.     IF ¬ GENERATINGCFM THEN
  742.         Macro
  743.         _IULangOrder
  744.             move.w    #$0020,-(sp)
  745.             dc.w     $A9ED
  746.         EndM
  747.     ELSE
  748.         IMPORT_CFM_FUNCTION    IULangOrder
  749.     ENDIF
  750.  
  751. ;
  752. ; pascal short IUTextOrder(const void *aPtr, const void *bPtr, short aLen, short bLen, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang)
  753. ;
  754.     IF ¬ GENERATINGCFM THEN
  755.         Macro
  756.         _IUTextOrder
  757.             move.w    #$0022,-(sp)
  758.             dc.w     $A9ED
  759.         EndM
  760.     ELSE
  761.         IMPORT_CFM_FUNCTION    IUTextOrder
  762.     ENDIF
  763.  
  764. ;
  765. ; pascal void FindWord(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, BreakTablePtr breaks, OffsetTable offsets)
  766. ;
  767.     IF ¬ GENERATINGCFM THEN
  768.         Macro
  769.         _FindWord
  770.             dc.w     $2F3C
  771.             dc.w     $8012
  772.             dc.w     $001A
  773.             dc.w     $A8B5
  774.         EndM
  775.     ELSE
  776.         IMPORT_CFM_FUNCTION    FindWord
  777.     ENDIF
  778.  
  779. ;
  780. ; pascal void NFindWord(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, NBreakTablePtr nbreaks, OffsetTable offsets)
  781. ;
  782.     IF ¬ GENERATINGCFM THEN
  783.         Macro
  784.         _NFindWord
  785.             dc.w     $2F3C
  786.             dc.w     $8012
  787.             dc.w     $FFE2
  788.             dc.w     $A8B5
  789.         EndM
  790.     ELSE
  791.         IMPORT_CFM_FUNCTION    NFindWord
  792.     ENDIF
  793.  
  794. ;
  795. ; pascal void UprText(Ptr textPtr, short len)
  796. ;
  797.     IF ¬ GENERATINGCFM THEN
  798.         ; parameters: 
  799.         ;     textPtr           => A0
  800.         ;     len               => D0
  801.         _UprText:    OPWORD    $A054
  802.     ELSE
  803.         IMPORT_CFM_FUNCTION    UprText
  804.     ENDIF
  805.  
  806. ;
  807. ; pascal void LwrText(Ptr textPtr, short len)
  808. ;
  809.     IF ¬ GENERATINGCFM THEN
  810.         ; parameters: 
  811.         ;     textPtr           => A0
  812.         ;     len               => D0
  813.         _LwrText:    OPWORD    $A056
  814.     ELSE
  815.         IMPORT_CFM_FUNCTION    LwrText
  816.     ENDIF
  817.  
  818. ;
  819. ; pascal void LowerText(Ptr textPtr, short len)
  820. ;
  821.     IF ¬ GENERATINGCFM THEN
  822.         ; parameters: 
  823.         ;     textPtr           => A0
  824.         ;     len               => D0
  825.         _LowerText:    OPWORD    $A056
  826.     ELSE
  827.         IMPORT_CFM_FUNCTION    LowerText
  828.     ENDIF
  829.  
  830. ;
  831. ; pascal void StripText(Ptr textPtr, short len)
  832. ;
  833.     IF ¬ GENERATINGCFM THEN
  834.         ; parameters: 
  835.         ;     textPtr           => A0
  836.         ;     len               => D0
  837.         _StripText:    OPWORD    $A256
  838.     ELSE
  839.         IMPORT_CFM_FUNCTION    StripText
  840.     ENDIF
  841.  
  842. ;
  843. ; pascal void UpperText(Ptr textPtr, short len)
  844. ;
  845.     IF ¬ GENERATINGCFM THEN
  846.         ; parameters: 
  847.         ;     textPtr           => A0
  848.         ;     len               => D0
  849.         _UpperText:    OPWORD    $A456
  850.     ELSE
  851.         IMPORT_CFM_FUNCTION    UpperText
  852.     ENDIF
  853.  
  854. ;
  855. ; pascal void StripUpperText(Ptr textPtr, short len)
  856. ;
  857.     IF ¬ GENERATINGCFM THEN
  858.         ; parameters: 
  859.         ;     textPtr           => A0
  860.         ;     len               => D0
  861.         _StripUpperText:    OPWORD    $A656
  862.     ELSE
  863.         IMPORT_CFM_FUNCTION    StripUpperText
  864.     ENDIF
  865.  
  866. ;
  867. ; pascal short IUCompPString(ConstStr255Param aStr, ConstStr255Param bStr, Handle itl2Handle)
  868. ;
  869.     IF GENERATINGCFM THEN
  870.         IMPORT_CFM_FUNCTION    IUCompPString
  871.     ENDIF
  872.  
  873. ;
  874. ; pascal short IUEqualPString(ConstStr255Param aStr, ConstStr255Param bStr, Handle itl2Handle)
  875. ;
  876.     IF GENERATINGCFM THEN
  877.         IMPORT_CFM_FUNCTION    IUEqualPString
  878.     ENDIF
  879.  
  880. ;
  881. ; pascal short IUStringOrder(ConstStr255Param aStr, ConstStr255Param bStr, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang)
  882. ;
  883.     IF GENERATINGCFM THEN
  884.         IMPORT_CFM_FUNCTION    IUStringOrder
  885.     ENDIF
  886.  
  887. ;
  888. ; pascal short IUCompString(ConstStr255Param aStr, ConstStr255Param bStr)
  889. ;
  890.     IF GENERATINGCFM THEN
  891.         IMPORT_CFM_FUNCTION    IUCompString
  892.     ENDIF
  893.  
  894. ;
  895. ; pascal short IUEqualString(ConstStr255Param aStr, ConstStr255Param bStr)
  896. ;
  897.     IF GENERATINGCFM THEN
  898.         IMPORT_CFM_FUNCTION    IUEqualString
  899.     ENDIF
  900.  
  901. ;
  902. ;    The following provide direct function prototypes for new names for 68k
  903. ;
  904. ;
  905. ; pascal void DateString(long dateTime, DateForm longFlag, Str255 result, Handle intlHandle)
  906. ;
  907.     IF ¬ GENERATINGCFM THEN
  908.         Macro
  909.         _DateString
  910.             move.w    #$000E,-(sp)
  911.             dc.w     $A9ED
  912.         EndM
  913.     ELSE
  914.         IMPORT_CFM_FUNCTION    DateString
  915.     ENDIF
  916.  
  917. ;
  918. ; pascal void TimeString(long dateTime, Boolean wantSeconds, Str255 result, Handle intlHandle)
  919. ;
  920.     IF ¬ GENERATINGCFM THEN
  921.         Macro
  922.         _TimeString
  923.             move.w    #$0010,-(sp)
  924.             dc.w     $A9ED
  925.         EndM
  926.     ELSE
  927.         IMPORT_CFM_FUNCTION    TimeString
  928.     ENDIF
  929.  
  930. ;
  931. ; pascal void LongDateString(LongDateTime *dateTime, DateForm longFlag, Str255 result, Handle intlHandle)
  932. ;
  933.     IF ¬ GENERATINGCFM THEN
  934.         Macro
  935.         _LongDateString
  936.             move.w    #$0014,-(sp)
  937.             dc.w     $A9ED
  938.         EndM
  939.     ELSE
  940.         IMPORT_CFM_FUNCTION    LongDateString
  941.     ENDIF
  942.  
  943. ;
  944. ; pascal void LongTimeString(LongDateTime *dateTime, Boolean wantSeconds, Str255 result, Handle intlHandle)
  945. ;
  946.     IF ¬ GENERATINGCFM THEN
  947.         Macro
  948.         _LongTimeString
  949.             move.w    #$0016,-(sp)
  950.             dc.w     $A9ED
  951.         EndM
  952.     ELSE
  953.         IMPORT_CFM_FUNCTION    LongTimeString
  954.     ENDIF
  955.  
  956. ;
  957. ; pascal short CompareString(ConstStr255Param aStr, ConstStr255Param bStr, Handle itl2Handle)
  958. ;
  959.     IF GENERATINGCFM THEN
  960.         IMPORT_CFM_FUNCTION    CompareString
  961.     ENDIF
  962.  
  963. ;
  964. ; pascal short IdenticalString(ConstStr255Param aStr, ConstStr255Param bStr, Handle itl2Handle)
  965. ;
  966.     IF GENERATINGCFM THEN
  967.         IMPORT_CFM_FUNCTION    IdenticalString
  968.     ENDIF
  969.  
  970. ;
  971. ; pascal short CompareText(const void *aPtr, const void *bPtr, short aLen, short bLen, Handle itl2Handle)
  972. ;
  973.     IF ¬ GENERATINGCFM THEN
  974.         Macro
  975.         _CompareText
  976.             move.w    #$001A,-(sp)
  977.             dc.w     $A9ED
  978.         EndM
  979.     ELSE
  980.         IMPORT_CFM_FUNCTION    CompareText
  981.     ENDIF
  982.  
  983. ;
  984. ; pascal short IdenticalText(const void *aPtr, const void *bPtr, short aLen, short bLen, Handle itl2Handle)
  985. ;
  986.     IF ¬ GENERATINGCFM THEN
  987.         Macro
  988.         _IdenticalText
  989.             move.w    #$001C,-(sp)
  990.             dc.w     $A9ED
  991.         EndM
  992.     ELSE
  993.         IMPORT_CFM_FUNCTION    IdenticalText
  994.     ENDIF
  995.  
  996. ;
  997. ; pascal short LanguageOrder(LangCode language1, LangCode language2)
  998. ;
  999.     IF ¬ GENERATINGCFM THEN
  1000.         Macro
  1001.         _LanguageOrder
  1002.             move.w    #$0020,-(sp)
  1003.             dc.w     $A9ED
  1004.         EndM
  1005.     ELSE
  1006.         IMPORT_CFM_FUNCTION    LanguageOrder
  1007.     ENDIF
  1008.  
  1009. ;
  1010. ; pascal short TextOrder(const void *aPtr, const void *bPtr, short aLen, short bLen, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang)
  1011. ;
  1012.     IF ¬ GENERATINGCFM THEN
  1013.         Macro
  1014.         _TextOrder
  1015.             move.w    #$0022,-(sp)
  1016.             dc.w     $A9ED
  1017.         EndM
  1018.     ELSE
  1019.         IMPORT_CFM_FUNCTION    TextOrder
  1020.     ENDIF
  1021.  
  1022. ;
  1023. ; pascal short StringOrder(ConstStr255Param aStr, ConstStr255Param bStr, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang)
  1024. ;
  1025.     IF GENERATINGCFM THEN
  1026.         IMPORT_CFM_FUNCTION    StringOrder
  1027.     ENDIF
  1028.  
  1029.     IF ¬ OLDROUTINELOCATIONS  THEN
  1030.     ENDIF
  1031.     ENDIF ; __TEXTUTILS__
  1032.